-
-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix usage vcpkg for windows and add cmake preset for vscode #414
base: headless-mode
Are you sure you want to change the base?
Fix usage vcpkg for windows and add cmake preset for vscode #414
Conversation
К слову, потыкался чутка с vcpkg, оказывается, если запускаться в дев терминале вижлы, то там прокидывается переменная VCPKG_ROOT автоматически, так что можно еще будет дописать в readme, вечером закомитаю |
Обновил настройки workflow в ветке, чтобы запускались проверки в PR. Нужно вытянуть изменения из headless-mode. |
…d-cmake-preset-for-vscode
…-cmake-preset-for-vscode
…code' of github.com:Ygrik2003/VoxelEngine-Cpp into Fix-usage-vcpkg-for-windows-and-add-cmake-preset-for-vscode
Еще немного потрогал Github Actions, теперь билды будут работать прямо из пресетов, что должно чутка облегчить работу с workflows при работе с флагами |
Отвалились ctest и неправильные пути для msys2 под clang, завтра-послезавтра гляну |
Короче можно попробовать первоначальный фикс с VCPKG_ROOT: ./vcpkg |
Короче намучался с MSYS2, судя по всему, он нужен был для того, что бы cmake по умолчанию находил clang. Так как я дописал cmake и теперь компилятор выбирается пресетом, я выкосил msys2 из windows-clang и теперь как и обычный windows конфиг, собирается через pwsh |
.github/workflows/windows-clang.yml
Outdated
run: | | ||
cp $env:MSYS2_LOCATION/clang64/bin/lua51.dll ${{ github.workspace }}/packaged/ | ||
cp -r build/* packaged/ | ||
cp C:/Windows/System32/msvcp140.dll packaged/Release/msvcp140.dll |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
К чему в Clang сборке эта строка? (50)
Кроме того, линковка теперь динамическая, при том, что должна быть статическая.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В релизе отсутствует vctest.exe
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Внутри, вместо VoxelCore.exe лежит VoxelEngine.exe, несмотря на строку 51.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кроме того, exe имеет динамическую зависимость в msvcp140.dll, которой в Clang-сборке быть не должно
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
По поводу msvcp140, это как раз таки одна из особенностей отказа от MSYS2
Дело в том, что msys2 и Cygwin поставляют свой Clang, который зависит от своих либ
Тот Clang, который я заюзал (LLVM), он юзает такой же рантайм, как и msvc. Что касательно линковки, то необходимый набор dll'ок слегка отличается, но msvcp140.dll все же присутствует
Нашел такую статью, которая частично объясняет происходящее.
А вообще, если у человека не установлен microsoft visual c++ redistributable (обычно устанавливается автоматически при скачивании некоторых игр в стиме), то игра вообще не запустится
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поправил остальное, деплоилась не та папка
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Основной вопрос в статической линковке, что была реализована в workflow ранее, где исключением был только lua51.dll.
@MihailRis А зачем вообще нужно переименование VoxelEngine в VoxelCore? |
Добавил пресет для интеграции с VSCode и подправил cmake для правильной работы vcpkg
Теперь не нужно 2 раза вызывать конфигурацию. Избавился от параметра VOXELENGINE_BUILD_WINDOWS_VCPKG в CMake. Теперь по дефолту windows билд собирается с vcpkg
Избавился от vcpkg загрузки из CMake, теперь есть ограничения:
За одно подправил деплой ресов, теперь он всегда будет работать под все платформы без проблем и костылей
Единственное, не уверен, что не сломал сборку windows-clang.yml, нужно перепроверить, возможно нужно делать экспорт полного пути к vcpkg
.github\workflows\windows-clang.yml:46
В любом случае нужно перепроверить этот билд